package com.wss.common.base;

import com.orhanobut.logger.Logger;
import com.wss.common.base.mvp.BasePresenter;
import com.wss.common.widget.ActionBar;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Component;
import ohos.global.resource.NotExistException;
import ohos.global.resource.WrongTypeException;
import java.io.IOException;

public abstract class BaseActionBarAbility<P extends BasePresenter> extends BaseMvpAbility<P> {


    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        //TODO 沉浸式状态栏导致actionbar无法显示
//        setImmersionBarColor(ResourceTable.Color_white);

        actionBar.setVisibility(Component.VISIBLE);
    }

    /**
     * 设置左边文字
     *
     * @param text 文字
     */
    protected void setLeftText(String text) {
        setLeftText(text, null);
    }

    /**
     * @param text     文字
     * @param listener 事件监听
     */
    protected void setLeftText(String text, Component.ClickedListener listener) {
        setLeftText(text, ResourceTable.Color_color_333333, listener);
    }

    /**
     * 设置左边文字
     *
     * @param text      文字
     * @param textColor 文字颜色
     * @param listener  事件监听
     */
    protected void setLeftText(String text, int textColor, Component.ClickedListener listener) {
        if (actionBar != null) {
            if (textColor != 0) {
                try {
                    actionBar.setLeftTextColor(getResourceManager().getElement(textColor).getColor());
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (NotExistException e) {
                    e.printStackTrace();
                } catch (WrongTypeException e) {
                    e.printStackTrace();
                }
            }
            actionBar.setLeftText(text, listener);
        }
    }

    /**
     * 设置左边icon
     *
     * @param drawable icon resId
     * @param listener 事件监听
     */
    protected void setLeftIcon(int drawable, Component.ClickedListener listener) {
        if (actionBar != null) {
            actionBar.setLeftIcon(drawable, listener);
        }
    }

    /**
     * 设置左边icon
     *
     * @param listener 事件监听
     */
    protected void setLeftIcon(Component.ClickedListener listener) {
        setLeftIcon(ResourceTable.Media_ic_back_black, listener);
    }

    /**
     * 设置左边View
     *
     * @param view view
     */
    protected void setLeftView(Component view) {
        if (actionBar != null) {
            actionBar.setLeftView(view);
        }
    }

    /**
     * 设置中间文字
     *
     * @param text text
     */
    protected void setCenterText(int text) {
        setCenterText(getString(text));
    }

    /**
     * 设置中间文字
     *
     * @param text text
     */
    protected void setCenterText(String text) {
        setCenterText(text, ResourceTable.Color_color_333333);
    }

    /**
     * 设置中间文字
     *
     * @param text      text
     * @param textColor 文字颜色
     */
    protected void setCenterText(String text, int textColor) {
        setCenterText(text, textColor, null);
    }

    /**
     * 设置中间文字
     *
     * @param text      text
     * @param textColor 文字颜色
     * @param listener  事件监听
     */
    protected void setCenterText(String text, int textColor, Component.ClickedListener listener) {

        if (actionBar != null) {
            if (textColor != 0) {
                actionBar.setCenterTextColor(textColor);
            }
            //加粗
            actionBar.setCenterTextBold(true);
            actionBar.setCenterText(text, listener);
        }
    }

    /**
     * 设置中间View
     *
     * @param view view
     */
    protected void setCenterView(Component view) {
        if (actionBar != null) {
            actionBar.setCenterView(view);
        }
    }

    /**
     * 设置右边文字
     *
     * @param resId    文字
     * @param listener 事件监听
     */
    protected void setRightText(int resId, Component.ClickedListener listener) {
        setRightText(getString(resId), listener);
    }

    /**
     * 设置右边文字
     *
     * @param text     文字
     * @param listener 事件监听
     */
    protected void setRightText(String text, Component.ClickedListener listener) {
        setRightText(text, ResourceTable.Color_color_333333, listener);
    }

    /**
     * 设置右边文字
     *
     * @param text      文字
     * @param textColor 文字颜色
     * @param listener  事件监听
     */
    protected void setRightText(String text, int textColor, Component.ClickedListener listener) {
        if (actionBar != null) {
            if (textColor != 0) {
                actionBar.setRightTextColor(textColor);
            }
            actionBar.setRightText(text, listener);
        }
    }

    /**
     * 设置右边icon
     *
     * @param drawable 图片
     * @param listener 事件监听
     */
    protected void setRightIcon(int drawable, Component.ClickedListener listener) {
        if (actionBar != null) {
            actionBar.setRightIcon(drawable, listener);
        }
    }

    /**
     * 设置右边View
     *
     * @param view view
     */
    protected void setRightView(Component view) {
        if (actionBar != null) {
            actionBar.setRightView(view);
        }
    }

    /**
     * 返回顶部TitleBar
     *
     * @return ActionBar
     */
    protected ActionBar getTitleBar() {
        return actionBar;
    }

    /**
     * 设置ActionBar下面的横线
     *
     * @param show 是否显示
     */
    protected void showActionBarLine(boolean show) {
        actionBarLine.setVisibility(show ? Component.VISIBLE : Component.HIDE);
    }

    /**
     * 设置左边返回图标是否显示
     *
     * @param show 是否显示
     */
    public void showBackImg(boolean show) {
        actionBar.showBackImg(show);
    }
}
